package com.tang.juc.cas;

import java.util.concurrent.atomic.AtomicInteger;

/**
 * @author tlm
 * @version 1.0
 * @date 2020/4/18 11:08
 * CAS(CompareAndSwap):比较并交换
 */
public class CASDemo {
    public static void main(String[] args) {
        AtomicInteger number = new AtomicInteger(5);
        //如果主内存的值为5，证明没有其他线程修改过，可以进行交换
        //expect:期望值，如果期望值和主内存的值一致，则交换成update中的值
        System.out.println(number.compareAndSet(5, 2020)+"\t 当前number的值为："+number.get());//true	     当前number的值为：2020
        //由于number的值已经被改成2020，所以期望值和主内存的值不同，返回false,不进行交换:
        System.out.println(number.compareAndSet(5, 8888)+"\t 当前number的值为："+number.get());//false	 当前number的值为：2020

    }
}

